import java.util.LinkedList;

/**
 * @ClassName Game
 * @Author luxiaomin
 *
 *
 *  第二章 2 链表之纸牌游戏
 * 纸牌游戏——21点，使自己牌的点数尽可能的接近21点，且不超过21点。扑克牌分别取它的面值，A是1，J到K分别是11-13
 * 庄家和玩家，在开局时各有两张牌，玩家可以看到自己的牌和点数，而庄家有一张牌是暂时隐藏的。
 * 玩家根据自己已有的点数选择接下来拿或者不拿第三张牌，如果玩家超过21点，即引爆，玩家输。
 * 玩家若选择拿第三张牌，庄家将显示隐藏的牌。只要庄家的点数小于21，它就必须再拿一张。如果庄家引爆，
 * 则玩家获胜。否则比较总点数，谁大谁获胜，相同则平局。
 *
 * 1、21点中其实不需要考虑纸牌的顺序，在发牌时，直接使用追加的方法即可。用自己写的add方法替代insert方法，验证游戏是否依然可以正确运行？
 * 2、在纸牌类Card、链表类LinkList基础上思考纸牌游戏——斗地主的发牌
 * 1）按牌的大小进行排序
 * 2）留三张作为底牌（地主牌）
 * 写出发牌的方法，给甲、乙、丙三个人发牌，并留三张底牌
 *
 */
public class Game {

    public static void main(String[] args) {

        LinkedList list = initCard();

        System.out.println(list.get(1));

    }

    /**
     * 初始化牌
     *初始化 点数 花色
     * @return
     */
    public static LinkedList initCard() {

        LinkedList<Card> linkedList = new LinkedList();

        for (int i=0;i<=3;i++) {
            for (int j=1;j<=13;j++) {
                if (i == 0) {
                    Card card = new Card();
                    card.setPoint(j);
                    card.setColor("红桃");
                    linkedList.add(card);
                }

                if (i == 1) {
                    Card card = new Card();
                    card.setPoint(j);
                    card.setColor("黑桃");
                    linkedList.add(card);
                }

                if (i == 2) {
                    Card card = new Card();
                    card.setPoint(j);
                    card.setColor("方块");
                    linkedList.add(card);
                }

                if (i == 3) {
                    Card card = new Card();
                    card.setPoint(j);
                    card.setColor("梅花");
                    linkedList.add(card);
                }

            }
        }

        return linkedList;
    }

    /**
     * 开始发牌
     *
     * @param user 发牌的用户
     * @param cards 牌的集合
     */
    public static void gaveUserCard(User user,LinkedList<Card> cards) {

    }
}
